package datastructure

import scala.collection.mutable.ListBuffer
object ListApp extends App {
  // 定长
  val list = List(1,2,3,4,5)
  println(list.head)
  println(list.tail)

  val list2 = 1 :: Nil    // head + tail
  println(list2)

  val list3 = 6 :: list2
  println(list3)

  val list4 = 1 :: 2 :: 3 :: Nil
  println(list4)

  println(list.length)

  // 变长list
  var list5 = ListBuffer[Int]()
  list5 += 1
  list5 += 1
  list5 += 1
  list5 += 1
  list5 += (2,3,4)
  list5 += (2,3,4)
  list5 ++= Array(5,6,7)

  list5 -= 2        // 删除元素 2被删除
  list5 -= (0,3,5)    // 删除 元素，没有就忽略

  list5 --= List(4,6,7)
  println(list5)

  // 转换成定list
  println(list5.toList)

  // 转成数组
  println(list5.toArray.mkString("-"))

  println(list5.isEmpty)
  println(list5.head)
  println(list5.tail)
  println(list5.tail.head)
  println(list5.tails)


  // sum
  def sum(nums:Int*):Int = {
    if(nums.isEmpty){
      0
    }else{
      nums.head + sum(nums.tail:_*)   // :_* 将sequence转成可变参数
    }
  }

  println(sum())
  println(sum(1,2,3,4))
}
